function removeNodesByType(nodes, typeToRemove) {
    return nodes.filter(node => {
        // 如果当前节点是需要删除的类型，则不返回该节点
        if (node.type === typeToRemove) {
            return false;
        }

        // 递归处理子节点
        if (node.children) {
            node.children = removeNodesByType(node.children, typeToRemove);
            // 如果子节点全部被删除，则可能需要删除该节点（视情况而定，这里不自动删除）
            // 但如果子节点为空数组，你可以根据需求处理
            if (node.children.length === 0) {
                // 你可以选择删除该节点，但在这个示例中我们保留它
                // delete node.children; // 注释掉的代码，表示可以选择性删除
            }
        }

        // 返回当前节点（除非它是需要删除的类型）
        return true;
    });
}

function filterTreeDatakk(tree) {
    return tree.filter(node => {
        // 如果children不为空数组，则递归过滤children
        if (Array.isArray(node.children) && node.children.length > 0) {
            node.children = filterTreeDatakk(node.children); // 递归过滤children
            // 如果children被过滤为空数组，且dataType为nvr，则返回false（不保留该节点）
            // 但由于我们先递归过滤了children，这里只需检查dataType
            return !(node.dataType === 'nvr' && node.children.length === 0);
        }
        // 如果children为空数组，且dataType为nvr，则不保留该节点
        return !(node.dataType === 'nvr' && (!Array.isArray(node.children) || node.children.length === 0));
    });
}

export {removeNodesByType, filterTreeDatakk};



